﻿using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DevTeam;

using System;
using System.Data;

namespace ConfExpert.Forms.Depo.Aksesuar
{
    public partial class AksesuarTransfer : XPopupForm
    {
        public DataTable Aksesuar { get; set; }
        public AksesuarTransfer(DataTable Aksesuar)
        {
            InitializeComponent();

            this.Aksesuar = Aksesuar;
        }

        private void StokTransfer_Load(object sender, EventArgs e)
        {
            

            btnTransfer.Click += new EventHandler(btnTransfer_Click);

            GetDetails("SODetay", "GetOrderRefforAksesuar");

            gleOrderRef.Properties.Assign(GetIntellisensedRI(ds.SODetay));
            gleOrderRef.Properties.ProcessNewValue += new ProcessNewValueEventHandler(ri_ProcessNewValue2);
            gleOrderRef.Properties.View.Columns["BrandId"].ColumnEdit = RI(Rp.Brand);
            gleOrderRef.Properties.View.Columns["SezonId"].ColumnEdit = RI(Rp.Sezon);
            gleOrderRef.EditValueChanged += new EventHandler(gleOrderRef_EditValueChanged);

            gleBrand.Properties.Assign(RI(Rp.Brand));
            gleSezon.Properties.Assign(RI(Rp.Sezon));

            cmbTercih.Properties.TextEditStyle = TextEditStyles.DisableTextEditor;
            cmbTercih.SelectedIndexChanged += new EventHandler(cmbTercih_SelectedIndexChanged);
            this.Shown += new EventHandler(Transfer_Shown);
            chkIdle.CheckedChanged += chkIdle_CheckedChanged;
        }

        void chkIdle_CheckedChanged(object sender, EventArgs e)
        {
            gleOrderRef.Enabled = !chkIdle.Checked;
            if (chkIdle.Checked)
                gleOrderRef.EditValue = null;
        }

        void gleOrderRef_EditValueChanged(object sender, EventArgs e)
        {
            if (gleOrderRef.Properties.View.GetFocusedRow() != null)
            {		 
                DataRow dr = ((DataRowView)gleOrderRef.Properties.View.GetFocusedRow()).Row;
                gleBrand.EditValue = intParse(dr["BrandId"]);
                gleSezon.EditValue = intParse(dr["SezonId"]);
            }
        }

        void cmbTercih_SelectedIndexChanged(object sender, EventArgs e)
        {
            deTill.Visible = cmbTercih.SelectedIndex == 2;
            cmbSure.Visible = cmbTercih.SelectedIndex == 1;
        }

        void Transfer_Shown(object sender, EventArgs e)
        {
            gleOrderRef.Focus();
        }
        

        public int AyrimId = 0;
        public int BrandId = 0;
        public int SezonId = 0;
        public string OrderRef = string.Empty;
        void btnTransfer_Click(object sender, EventArgs e)
        {
            if (gleOrderRef.EditValue == null && !chkIdle.Checked)
            {
                XtraMessageBox.Show("OrderRef boş olamaz!");
                return;
            }
            if (intParse(gleBrand.EditValue) == 0)
            {
                XtraMessageBox.Show("Marka boş olamaz!");
                return;
            }
            if (intParse(gleSezon.EditValue) == 0)
            {
                XtraMessageBox.Show("Sezon boş olamaz!");
                return;
            }

            string xmlSel = Aksesuar.Serialize();
            string str = string.Empty;


            DataTable xBuffer = ExecuteDataTable("AksesuarTransferKontrol",
                xmlSel,
                gleOrderRef.EditValue,
                intParse(gleBrand.EditValue),
                intParse(gleSezon.EditValue),
                WhoAmI,
                //cmbTercih.SelectedIndex > 0,
                //cmbTercih.SelectedIndex == 1 ? int.Parse(cmbSure.Text) : 0,
                //cmbTercih.SelectedIndex == 2 ? DateTime.Parse(deTill.EditValue.ToString()) : new DateTime(2000, 1, 1),
                chkIdle.Checked,
                'A'
                );

            if (xBuffer.Rows.Count > 0)
                if (xBuffer.Rows[0]["intVal"].ToInt() > 0)
                {
                    string oid = string.Empty;
                    foreach (DataRow r in xBuffer.Rows)
                        oid += r["intVal"].ToString() + Environment.NewLine;

                    if (xBuffer.Rows[0]["strVal"].ToString().IsNullOrWhiteSpace())
                        XtraMessageBox.Show("İşleme devam edebilmek için OwnerId'si (sahibi) uyumsuz aksesuarları sepetinizden çıkarmalısınız:\n\n" + oid, "İşlem başarısız");
                    else
                        XtraMessageBox.Show("Yetkili olmadığınız iki depo arasında transfer yapamazsınız. Şu aksesuarlar bu kuralı ihlal ediyor:\n\n" + oid, "İşlem başarısız");

                    return;
                }
                else
                    str = "Onay gerektiren aksesuarlar için istek oluşturuldu. Takip için IstekId: " + xBuffer.Rows[0]["strVal"].ToString();

            //ExecQuery("Transfer",
            //    xmlSel,
            //    gleOrderRef.Text,
            //    intParse(gleBrand.EditValue),
            //    intParse(gleSezon.EditValue),
            //    WhoAmI,
            //    cmbTercih.SelectedIndex > 0,
            //    cmbTercih.SelectedIndex == 1 ? int.Parse(cmbSure.Text) : 0,
            //    cmbTercih.SelectedIndex == 2 ? DateTime.Parse(deTill.EditValue.ToString()) : new DateTime(2000, 1, 1)
            //    );

            if (str != string.Empty)
                XtraMessageBox.Show(str);


            this.DialogResult = System.Windows.Forms.DialogResult.OK;
        }
    }
}